﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0204_MaxLengthBetweenEqualCharacters : IAlgorithm
    {
        // title

        /*
        给你一个字符串 s，请你返回 两个相同字符之间的最长子字符串的长度 ，计算长度时不含这两个字符。如果不存在这样的子字符串，返回 -1 。
        子字符串 是字符串中的一个连续字符序列。

        提示：
            1 <= s.length <= 300
            s 只含小写英文字母
        */

        public void Test()
        {
            // 算法参数定义

            // 算法执行与打印
            Console.WriteLine(MaxLengthBetweenEqualCharacters("cbzxy"));
        }

        // 算法
        public int MaxLengthBetweenEqualCharacters(string s)
        {
            int[] firstIndex = new int[26];
            Array.Fill(firstIndex, -1);
            int maxLength = -1;
            for (int i = 0; i < s.Length; i++)
            {
                if (firstIndex[s[i] - 'a'] < 0)
                {
                    firstIndex[s[i] - 'a'] = i;
                }
                else
                {
                    maxLength = Math.Max(maxLength, i - firstIndex[s[i] - 'a'] - 1);
                }
            }
            return maxLength;
        }

    }
}
